package com.msh.frame.interfaces;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * 文本转图片
 */
public interface ITextToImg {
  static final String IMAGE_BAST64_FORMAT = "data:image/jpeg;base64,%s";

  /**
   * 图片输出流
   * @param text 文本
   * @param os 输出流
   */
  void outputStream(String text, OutputStream os);

  /**
   * 图片输出base64
   * @param text 文本
   * @return
   */
  default String base64(String text){
    // 生成图片验证码
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    outputStream(text, outputStream);

    String s = new String(Base64.getEncoder().encode(outputStream.toByteArray()),
        StandardCharsets.UTF_8);
    return String.format(IMAGE_BAST64_FORMAT, s);
  }

  /**
   * 图片输出文件
   * @param text 文本
   * @param path 文件路径
   */
  default void outputFile(String text, String path) throws FileNotFoundException {
    FileOutputStream outputStream = new FileOutputStream(path);
    outputStream(text, outputStream);
  }
}
